const axios = require('axios');

/**
 * 发起 HTTP 请求
 * @param {string} url 请求地址
 * @param {string} method 请求方法
 * @param {object} data 请求 body
 * @param {object} cookies cookies
 * @param {string} platform 请求哪个平台，'tx' 天行数据，'tl' 图灵机器人，默认为 'tx'
 * @returns {Promise} Promise 对象
 */
function req({ url, method, data, headers, platform = 'tx' }) {

    console.log('请求url', url);

    return new Promise((resolve, reject) => {
        axios({
            url: url,
            method: method,
            data: data,
            headers: { 'Content-Type': 'application/json' , ...headers}, // 注意这里修正了请求头
        })
        .then(response => {
            // console.error('response', response);
            const res = response.data;
            // if ((res.code !== 200 && platform === 'tx') || (res.code !== 100000 && platform === 'tl')) {
            //     console.error('接口请求失败', res.msg || res.text);
            // }
            resolve(res);
        })
        .catch(error => {
            console.error('请求出错', error);
            reject(error);
        });
    });
}



/**
 * 发起 HTTP 请求
 * @param {string} url 请求地址
 * @param {string} method 请求方法
 * @param {object} data 请求 body
 * @returns {Promise} Promise 对象
 */
function reqGet({ url,headers}) {
    console.log('请求url', url);
    return new Promise((resolve, reject) => {
        axios({
            url: url,
            method: "GET",
            maxBodyLength: Infinity,
            headers: { 'Content-Type': 'application/json' , ...headers}, // 注意这里修正了请求头
        })
        .then(response => {
            console.log('response', response.data.list);
            const res = response.data;
            resolve(res);
        })
        .catch(error => {
            console.error('请求出错', error);
            reject(error);
        });
    });
}


/**
 * 发起 HTTP 请求
 * @param {string} url 请求地址
 * @param {string} method 请求方法
 * @param {object} data 请求 body
 * @param {object} cookies cookies
 * @param {string} platform 请求哪个平台，'tx' 天行数据，'tl' 图灵机器人，默认为 'tx'
 * @returns {Promise} Promise 对象
 */
function reqImage({ url, method, cookies }) {
    return new Promise((resolve, reject) => {
        axios({
            url: url,
            method: method,
            headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie': cookies },
            responseType: 'arraybuffer' 
        })
        .then(response => {

            // console.log('response.body', response.data);

            resolve(response);
        })
        .catch(error => {
            console.error('请求出错', error);
            reject(error);
        });
    });
}


module.exports = {
    req,
    reqGet,
    reqImage
};
